from rest_framework.views import exception_handler
# from luffyapi.utils import response  # 可以这么导
from .response import APIResponse  # 也可以这么导，因为exceptions.py和response.py在同一个目录下
from .logger import log


def common_exception_handler(exc, context):
    ret = exception_handler(exc, context)
    # 记录日志
    log.error('报错的是：%s，错误是：%s' % (context['view'].__class__.__name__, str(exc)))
    # context['view'].__class__.__name__ 是出现错误的视图类的名字
    if not ret:  # drf内置处理不了，丢给Django的，我们自己来处理
        # 此处可以写的很细，就可以分不同情况处理，但这里先写简单点
        if isinstance(exc, KeyError):
            return APIResponse(code=0, msg='Key error')

        return APIResponse(code=0, msg='error', result=str(exc))
    else:
        return APIResponse(code=0, msg='error', result=ret.data)
